// 导入
import axios from 'axios'
import jsonp from "jsonp"
// 创建 实例
import Vue from 'vue';
// 显示加载提示
function showLoading(str="加载中..."){
	// 如果该元素已经存在则创建
	var elem = document.getElementById("myloading");;
	if(!elem){
		var elem = document.createElement("div");
		elem.id = "myloading";
	} 
	
	elem.innerHTML =`<div class='loading'>${str}</div>`
	
	document.body.append(elem);
}
// 隐藏加载提示
function hideLoading(){
	var elem = document.getElementById("myloading");
	if(elem){
		document.body.removeChild(elem);
	}	
}
var request  = axios.create({
	baseURL:"/",
	timeout:5000,
	headers:{post:{"Content-Type":"application/x-www-form-urlencoded"}}
})
// 请求拦截（正在加载中）
// 在每一次通过request 去请求数据，对请求做拦截，处理相关业务
request.interceptors.request.use(
function(config){
	// console.log("开始加载...")、
	// 通过配置控制是否显示加载提示
	if(config.showLoading){
		// 如果配置showLoading属性值为true，默认就是"加载中..."
		if(config.showLoading===true){
			config.showLoading = "加载中..."
		} 
		// 否则提示文字就是 config.shoLoading  的值
		showLoading(config.showLoading)
	}
	// 每次發起ajax请求都让请求头写的token
	config.headers.Token = window.localStorage.getItem("token");
	
	return config;
},
function(err){
	hideLoading();
	return Promise.reject(err)
})
// 响应拦截
request.interceptors.response.use(
function(response){
	hideLoading();
	// console.log("加载完毕")
	return response;
},
function(err){
	hideLoading();
	console.log("加载结束");
	return Promise.reject(err)
})

// 扩展axios方法
// jsnop(url,conifg,(err,data)=>{}) 安装导入的方法，挂载到创建axios实例上面
request.jsonp = function(url,config){
	// promise写法
	return new Promise((resolve,reject)=>{
		 jsonp(url,config,function(err,data){
			 if(err){reject(err)}else{
				 resolve(data)
			 }
		 })
	})
}

// 导出
export default request;


	
// class Person {
// 	constructor(name,age) {
// 	    this.name = name;
// 		this.age = age;
// 	}
// 	say(){
// 		console.log(`${this.name}`)
// 	}
// }

// //导出  
// 	export default Person
	
// // 导出

// import Person from 'xxx'